package com.qf.controller;

import com.qf.pojo.resp.BaseResp;
import com.qf.pojo.vo.Orders;
import com.qf.service.OrdersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.ParseException;
import java.util.Map;

/**
 * @author guoxu
 * @create 2021/3/11 17:17
 */
@RestController
@RequestMapping(value = "orders")
public class OrdersController {

    @Autowired
    OrdersService ordersService;

    /***
     * Desc: 1、用户查自己的所有订单
     * @param map 用户的id的封装
     * @return BaseResp
     * @author  郭旭
     * @date 2021/3/12 9:25
     */
    @PostMapping(value = "findAll")
    public BaseResp findAll(@RequestBody Map map){
        System.out.println("请求到了"+map.get("id").toString());
        return ordersService.findAll(Integer.valueOf(map.get("id").toString()));
    }

    /***
     * Desc:/2、用户根据状态，查自己的订单
     * @param map 用户的id  订单的状态的封装

     * @return  BaserResp
     * @author  郭旭
     * @date 2021/3/11 17:29
     */
    @PostMapping(value = "findByUidAndState")
    public BaseResp findByUidAndState(@RequestBody Map map){
        return ordersService.findByUidAndState(Integer.valueOf(map.get("id").toString()),map.get("state").toString());
    }

    /***
     * Desc:/3、根据订单id查订单所有属性的方法
     * @param map 订单id的封装
     * @return BaseResp
     * @author  郭旭
     * @date 2021/3/12 11:26
     */
    @PostMapping(value = "/findById")
    public BaseResp findById(@RequestBody Map map){
        return ordersService.findById(map);
    }

    /***
     * Desc:/4、开始配送的id，修改订单状态，并且以hash方式存入redis
     * @param map 商家的id，订单的id，起点位置
     * @return BaseResp
     * @author 郭旭
     * @date 2021/3/12 11:29
     *
     */
    @PostMapping(value = "/distribution")
    public BaseResp distribution(@RequestBody Map map){
        return ordersService.distribution(map);
    }

    /***
     * Desc: 5、生成新的订单
     * @param orders 订单信息
     * @return BaseResp
     * @author  郭旭
     * @date 2021/3/12 16:25
     * @throws ParseException 抛出异常继续执行
     */
   @PostMapping(value = "/add")
    public BaseResp add(@RequestBody Orders orders) throws ParseException {
        return ordersService.add(orders);
   }

   /***
    * Desc: 6、签收的方法
    * @param orders 订单信息
    * @return BaseResp
    * @author 郭旭
    * @date 2021/3/12 16:26
    * @throws ParseException 抛出异常继续执行
    */
   @PostMapping(value = "/sign")
    public BaseResp sign(@RequestBody Orders orders) throws ParseException {
       return ordersService.sign(orders);
   }

   @PostMapping("/update")
    public BaseResp update(@RequestBody Orders orders){
       return ordersService.update(orders);
   }

   @PostMapping("/findByOnumber")
    public BaseResp findByOnumber(@RequestBody String oNumber){
       return ordersService.findByOnumber(oNumber);
   }

   @PostMapping(value = "findByBid")
   public BaseResp findByBid(@RequestBody Map map){
       return ordersService.findByBid(Integer.valueOf(map.get("id").toString()));
   }

   /***
    * Desc: 商家根据id和状态查订单
    * @param  map id 和 状态的封装
    * @return  BaseResp
    * @author  郭旭
    * @date 2021/3/16 21:10
    */
    @PostMapping(value = "findByBidAndState")
    public BaseResp findByBidAndState(@RequestBody Map map){
        return ordersService.findByBidAndState(Integer.valueOf(map.get("id").toString()),map.get("state").toString());
    }

    /***
     * Desc: 修改评价
     * @param orders 所有的订单属性
     * @return baseresp
     * @author 郭旭
     * @date 2021/3/16 21:06
     */
    @PostMapping(value = "/updateEvaluation")
    public BaseResp updateEvaluation(@RequestBody Orders orders){
       return ordersService.updateEvaluation(orders);
    }

    /***
     * Desc: 用户评价自己的方法
     * @param  map id和评价的封装
     * @return baseresp
     * @author 郭旭
     * @date 2021/3/16 21:03
     */
    @PostMapping(value = "/findByUidAndEvaluation")
    public BaseResp findByUidAndEvaluation(@RequestBody Map map){
       return ordersService.findByUidAndEvaluation(Integer.valueOf(map.get("id").toString()),map.get("evaluation").toString(),map.get("state").toString());
    }
    /***
     * Desc: 商家查找自己店铺评价的方法
     * @param map 储存商家名称和id的信息
     * @return baseresp
     * @author  郭旭
     * @date 2021/3/16 21:03
     */
    @PostMapping(value = "/findByBidAndNum")
    public BaseResp findByBidAndNum(@RequestBody Map map){
       return ordersService.findByBidAndNum(map.get("id").toString(),map.get("bname").toString());
    }

}
